package concurrence.cas;

import java.util.concurrent.atomic.AtomicInteger;

public class CASDemo {
    public static void main(String[] args) {
        AtomicInteger atomicInteger = new AtomicInteger(10);//相当于主内存的值
        /**
         * 期待值是10，相当于工作内存中的数据是10，与主内存的数据进行比较，如果一致则update，更新为2020
         */
        //首先expect为10，相当于工作内存中的数据是10，与主内存的数据比较，一致，则update，更新为2020，将工作内存的值刷回到主内存，主内存中的值变为2020
        System.out.println(atomicInteger.compareAndSet(10, 2020)+"\t当前的值为:"+atomicInteger.get());
        //expect还是10，相当于工作内存中的数据是10，与主内存中的2020进行比较，发现两者不一致，更新失败
        System.out.println(atomicInteger.compareAndSet(10, 2021)+"\t当前的值为:"+atomicInteger.get());
        atomicInteger.getAndIncrement();
    }
}
